package jmine.tec.persist.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Annotation para definição de uma constraint no banco de dados relativa a esta coluna.
 * 
 * @author lundberg
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(value = { ElementType.METHOD, ElementType.TYPE })
public @interface Constraint {

    /**
     * Nome da check constraint.
     * 
     * @deprecated utilize o parametro name, de preferencia. Será removido em futuras versões do jTec.
     */
    @Deprecated
    String value() default "";

    /**
     * Nome da check constraint. Utilize, será definido como obrigatório no futuro.
     */
    String name() default "";

    /**
     * Condição da constraint. Caso não seja informado, será inferida uma constraint, se possível.
     */
    String condition() default "";
    
    /**
     * Sufixo da constraint. Caso não seja informado, será criada automaticamente um número.
     */
    String suffix() default "";

    /**
     * Desabilita a constraint. Permite que contraints geradas automaticamente sejam desabilitadas.
     */
    boolean enabled() default true;
}
